library verilog;
use verilog.vl_types.all;
entity cmsdk_apb_subsystem is
    generic(
        APB_EXT_PORT12_ENABLE: integer := 0;
        APB_EXT_PORT13_ENABLE: integer := 0;
        APB_EXT_PORT14_ENABLE: integer := 0;
        APB_EXT_PORT15_ENABLE: integer := 0;
        INCLUDE_IRQ_SYNCHRONIZER: integer := 0;
        INCLUDE_APB_TEST_SLAVE: integer := 1;
        INCLUDE_APB_TIMER0: integer := 1;
        INCLUDE_APB_TIMER1: integer := 1;
        INCLUDE_APB_DUALTIMER0: integer := 1;
        INCLUDE_APB_UART0: integer := 1;
        INCLUDE_APB_UART1: integer := 1;
        INCLUDE_APB_UART2: integer := 1;
        INCLUDE_APB_WATCHDOG: integer := 1;
        BE              : integer := 0
    );
    port(
        HCLK            : in     vl_logic;
        HRESETn         : in     vl_logic;
        HSEL            : in     vl_logic;
        HADDR           : in     vl_logic_vector(15 downto 0);
        HTRANS          : in     vl_logic_vector(1 downto 0);
        HWRITE          : in     vl_logic;
        HSIZE           : in     vl_logic_vector(2 downto 0);
        HPROT           : in     vl_logic_vector(3 downto 0);
        HREADY          : in     vl_logic;
        HWDATA          : in     vl_logic_vector(31 downto 0);
        HREADYOUT       : out    vl_logic;
        HRDATA          : out    vl_logic_vector(31 downto 0);
        HRESP           : out    vl_logic;
        PCLK            : in     vl_logic;
        PCLKG           : in     vl_logic;
        PCLKEN          : in     vl_logic;
        PRESETn         : in     vl_logic;
        PADDR           : out    vl_logic_vector(11 downto 0);
        PWRITE          : out    vl_logic;
        PWDATA          : out    vl_logic_vector(31 downto 0);
        PENABLE         : out    vl_logic;
        ext12_psel      : out    vl_logic;
        ext13_psel      : out    vl_logic;
        ext14_psel      : out    vl_logic;
        ext15_psel      : out    vl_logic;
        ext12_prdata    : in     vl_logic_vector(31 downto 0);
        ext12_pready    : in     vl_logic;
        ext12_pslverr   : in     vl_logic;
        ext13_prdata    : in     vl_logic_vector(31 downto 0);
        ext13_pready    : in     vl_logic;
        ext13_pslverr   : in     vl_logic;
        ext14_prdata    : in     vl_logic_vector(31 downto 0);
        ext14_pready    : in     vl_logic;
        ext14_pslverr   : in     vl_logic;
        ext15_prdata    : in     vl_logic_vector(31 downto 0);
        ext15_pready    : in     vl_logic;
        ext15_pslverr   : in     vl_logic;
        APBACTIVE       : out    vl_logic;
        RXd             : in     vl_logic;
        TXd             : out    vl_logic;
        TXen            : out    vl_logic;
        uart1_rxd       : in     vl_logic;
        uart1_txd       : out    vl_logic;
        uart1_txen      : out    vl_logic;
        uart2_rxd       : in     vl_logic;
        uart2_txd       : out    vl_logic;
        uart2_txen      : out    vl_logic;
        timer0_extin    : in     vl_logic;
        timer1_extin    : in     vl_logic;
        apbsubsys_interrupt: out    vl_logic_vector(31 downto 0);
        watchdog_interrupt: out    vl_logic;
        watchdog_reset  : out    vl_logic
    );
    attribute mti_svvh_generic_type : integer;
    attribute mti_svvh_generic_type of APB_EXT_PORT12_ENABLE : constant is 1;
    attribute mti_svvh_generic_type of APB_EXT_PORT13_ENABLE : constant is 1;
    attribute mti_svvh_generic_type of APB_EXT_PORT14_ENABLE : constant is 1;
    attribute mti_svvh_generic_type of APB_EXT_PORT15_ENABLE : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_IRQ_SYNCHRONIZER : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_TEST_SLAVE : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_TIMER0 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_TIMER1 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_DUALTIMER0 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_UART0 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_UART1 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_UART2 : constant is 1;
    attribute mti_svvh_generic_type of INCLUDE_APB_WATCHDOG : constant is 1;
    attribute mti_svvh_generic_type of BE : constant is 1;
end cmsdk_apb_subsystem;
